网络流……..题目要求我们求出能逃离的蜥蜴数量的最大值,不就是最大流吗?
然后考虑怎么建模。
首先来看看蜥蜴,我们将这些蜥蜴的点跟 $s$ 连边,边权是多少呢?想一想,由于一个位置只有一只蜥蜴,那么边权就当然是 $1$ 了。
然后考虑逃离的这些柱子,题目说什么石柱都不稳定,每次当蜥蜴跳跃时,所离开的石柱高度减 $1$ ,看似很不好办,但是这恰恰就是网络流。对于柱子间的一条边,从 $s$ 经过蜥蜴的点的时候,流量就只有 $1$ 了,这个 $1$ 的流量流过柱子中的边的时候就会让这条边的边权减 $1$ ,减到 $0$ 当然就不能流了。
那么柱子之间怎么连边呢?
对于一个柱子,我们将它拆成两个点,一个入点,一个出点。其中入点向出点连一条边,边权为这个柱子的高度。如果一个柱子,判断一下,发现从它这里可以跳出去,那么就将这个柱子的出点向 $t$ 连一条边,这条边仅仅是代表找到了答案,对答案没有影响,边权为 $inf$ 。
然后我们再看一下,这个柱子能到达的柱子有哪些,这里直接算曼哈顿距离就好了。然后由这条柱子的出点向能到达的柱子的入点连一条边,边权呢?还是为 $inf$ 。因为我们对一个柱子的影响就是入点到出点的那一条边,那一条边的边权已经限制了这个柱子的使用量,所以中间的边权为 $inf$ 。
注意数组大小,要开大一点。
Code:
1 | /* |
本文标题:【题解】 [SCOI2007]蜥蜴 网络流 luogu2472
文章作者:Qiuly
发布时间:2019年03月06日 - 00:00
最后更新:2019年03月29日 - 13:53
原始链接:http://qiulyblog.github.io/2019/03/06/[题解]luoguP2472/
许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。